#Boa:Frame:Frame1

import wx
import consultasBD
import utiles

def create(parent):
    return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1BUTTON2, wxID_FRAME1BUTTON3, 
 wxID_FRAME1CHECKBOX1, wxID_FRAME1CHECKBOX2, wxID_FRAME1CHECKBOX3, 
 wxID_FRAME1CHECKBOX4, wxID_FRAME1CHECKBOX5, wxID_FRAME1CHECKBOX6, 
 wxID_FRAME1CHECKBOX7, wxID_FRAME1CHECKBOX8, wxID_FRAME1CHECKBOX9, 
 wxID_FRAME1COMBOBOX1, wxID_FRAME1PANEL1, wxID_FRAME1STATICTEXT1, 
 wxID_FRAME1STATICTEXT2, wxID_FRAME1STATICTEXT3, wxID_FRAME1STATICTEXT4, 
 wxID_FRAME1TEXTCTRL1, wxID_FRAME1TEXTCTRL2, 
] = [wx.NewId() for _init_ctrls in range(21)]

class Frame1(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
              pos=wx.Point(380, 126), size=wx.Size(308, 342),
              style=wx.DEFAULT_FRAME_STYLE, title='Exportar a Matris web')
        self.SetClientSize(wx.Size(300, 315))

        self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
              pos=wx.Point(0, 0), size=wx.Size(300, 315),
              style=wx.TAB_TRAVERSAL)

        self.textCtrl1 = wx.TextCtrl(id=wxID_FRAME1TEXTCTRL1, name='textCtrl1',
              parent=self.panel1, pos=wx.Point(24, 24), size=wx.Size(100, 21),
              style=0, value='')
        self.textCtrl1.Bind(wx.EVT_KILL_FOCUS, self.OnText1)

        self.textCtrl2 = wx.TextCtrl(id=wxID_FRAME1TEXTCTRL2, name='textCtrl2',
              parent=self.panel1, pos=wx.Point(24, 64), size=wx.Size(100, 21),
              style=0, value='')

        self.comboBox1 = wx.ComboBox(choices=[], id=wxID_FRAME1COMBOBOX1,
              name='comboBox1', parent=self.panel1, pos=wx.Point(24, 104),
              size=wx.Size(130, 21), style=0, value='')
        self.comboBox1.SetLabel('')

        self.checkBox1 = wx.CheckBox(id=wxID_FRAME1CHECKBOX1,
              label='P.T.C. / SKU', name='checkBox1', parent=self.panel1,
              pos=wx.Point(24, 144), size=wx.Size(136, 13), style=0)
        self.checkBox1.SetValue(False)
        self.checkBox1.Enable(False)

        self.checkBox2 = wx.CheckBox(id=wxID_FRAME1CHECKBOX2,
              label='Descripcion / Titulo', name='checkBox2',
              parent=self.panel1, pos=wx.Point(24, 160), size=wx.Size(152, 13),
              style=0)
        self.checkBox2.SetValue(False)

        self.checkBox3 = wx.CheckBox(id=wxID_FRAME1CHECKBOX3,
              label='Rubro-Grupo / Categoria', name='checkBox3',
              parent=self.panel1, pos=wx.Point(24, 176), size=wx.Size(160, 13),
              style=0)
        self.checkBox3.SetValue(False)

        self.checkBox4 = wx.CheckBox(id=wxID_FRAME1CHECKBOX4, label='Color',
              name='checkBox4', parent=self.panel1, pos=wx.Point(24, 192),
              size=wx.Size(152, 13), style=0)
        self.checkBox4.SetValue(False)

        self.checkBox5 = wx.CheckBox(id=wxID_FRAME1CHECKBOX5, label='Talle',
              name='checkBox5', parent=self.panel1, pos=wx.Point(24, 208),
              size=wx.Size(70, 13), style=0)
        self.checkBox5.SetValue(False)

        self.checkBox6 = wx.CheckBox(id=wxID_FRAME1CHECKBOX6, label='Precio',
              name='checkBox6', parent=self.panel1, pos=wx.Point(24, 224),
              size=wx.Size(70, 13), style=0)
        self.checkBox6.SetValue(False)

        self.checkBox8 = wx.CheckBox(id=wxID_FRAME1CHECKBOX8, label='Peso',
              name='checkBox8', parent=self.panel1, pos=wx.Point(24, 240),
              size=wx.Size(56, 13), style=0)
        self.checkBox8.SetValue(False)

        self.checkBox7 = wx.CheckBox(id=wxID_FRAME1CHECKBOX7, label='Stock',
              name='checkBox7', parent=self.panel1, pos=wx.Point(24, 256),
              size=wx.Size(70, 13), style=0)
        self.checkBox7.SetValue(False)

        self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label='Exportar',
              name='button1', parent=self.panel1, pos=wx.Point(24, 280),
              size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnExportar, id=wxID_FRAME1BUTTON1)

        self.button2 = wx.Button(id=wxID_FRAME1BUTTON2, label='Limpiar',
              name='button2', parent=self.panel1, pos=wx.Point(112, 280),
              size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnLimpiar, id=wxID_FRAME1BUTTON2)

        self.button3 = wx.Button(id=wxID_FRAME1BUTTON3, label='Salir',
              name='button3', parent=self.panel1, pos=wx.Point(200, 280),
              size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnSalir, id=wxID_FRAME1BUTTON3)

        self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
              label='P.T.C. - desde', name='staticText1', parent=self.panel1,
              pos=wx.Point(24, 8), size=wx.Size(70, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_FRAME1STATICTEXT2,
              label='P.T.C. - hasta', name='staticText2', parent=self.panel1,
              pos=wx.Point(24, 48), size=wx.Size(68, 13), style=0)

        self.staticText3 = wx.StaticText(id=wxID_FRAME1STATICTEXT3,
              label='* Todos los PTC', name='staticText3', parent=self.panel1,
              pos=wx.Point(136, 24), size=wx.Size(76, 13), style=0)

        self.staticText4 = wx.StaticText(id=wxID_FRAME1STATICTEXT4,
              label='Temporada', name='staticText4', parent=self.panel1,
              pos=wx.Point(24, 88), size=wx.Size(54, 13), style=0)

        self.checkBox9 = wx.CheckBox(id=wxID_FRAME1CHECKBOX9, label='TODOS',
              name='checkBox9', parent=self.panel1, pos=wx.Point(176, 144),
              size=wx.Size(70, 13), style=0)
        self.checkBox9.SetValue(False)
        self.checkBox9.Bind(wx.EVT_CHECKBOX, self.OnTodos,
              id=wxID_FRAME1CHECKBOX9)

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.cargarTemporadas()
        self.checkBox1.SetValue(True)
        self.textCtrl1.SetFocus()

    def cargarTemporadas(self):
        anio = int(utiles.obtenerFecha("Y-m-d")[:4])
        mes = int(utiles.obtenerFecha("Y-m-d")[5:7])
        dia = int(utiles.obtenerFecha("Y-m-d")[-2:])
        anioanterior = anio -1
        anioactual = anio
        aniosiguiente = anio + 1
        self.comboBox1.Append("INVIERNO"+str(anioanterior))
        self.comboBox1.Append("VERANO"+str(anioanterior))
        self.comboBox1.Append("INVIERNO"+str(anioactual))
        self.comboBox1.Append("VERANO"+str(anioactual))
        self.comboBox1.Append("INVIERNO"+str(aniosiguiente))
        self.comboBox1.Append("VERANO"+str(aniosiguiente))

    def OnText1(self, event):
        if self.textCtrl1.GetLabel()=="*":
            self.textCtrl2.Enable(False)
            self.comboBox1.SetFocus()
        else:
            self.textCtrl2.Enable(True)

    def OnSalir(self, event):
        self.Close()

    def OnLimpiar(self, event):
        self.textCtrl1.SetLabel("")
        self.textCtrl2.SetLabel("")
        self.textCtrl2.Enable(True)
        self.comboBox1.SetSelection(-1)
        self.checkBox1.SetValue(True)
        self.checkBox2.SetValue(False)
        self.checkBox3.SetValue(False)
        self.checkBox4.SetValue(False)
        self.checkBox5.SetValue(False)
        self.checkBox6.SetValue(False)
        self.checkBox7.SetValue(False)
        self.checkBox8.SetValue(False)
        self.textCtrl1.SetFocus()

    def validar(self):
        if self.textCtrl1.GetLabel() == "":
            utiles.mensaje(None,"Debe indicar PTC inicial")
            return False
        if not self.checkBox2.GetValue() and \
           not self.checkBox3.GetValue() and \
           not self.checkBox4.GetValue() and \
           not self.checkBox5.GetValue() and \
           not self.checkBox6.GetValue() and \
           not self.checkBox8.GetValue() and \
           not self.checkBox7.GetValue():     
            #Descripcion Titulo / Rubro-Grupo Categoria / Color / Talle / Precio / Stock
            utiles.mensaje(None,"Debe indicar algun dato a exportar")
            return False
        return True

    def obtenerPTC(self, ptcDesde, ptcHasta, temporada):
        r1 = "SELECT id FROM producto_talle_color WHERE "
        if ptcDesde == "*":
            r2 = "1"
            if temporada != "":
                r2 = r2 + " AND temporada = '"+temporada+"' "
        else:
            if ptcDesde != "":
                r2 = "id BETWEEN '"+ptcDesde+"' AND '"
                if ptcHasta != "":
                    r2 = r2 + ptcHasta + "' "
                else:
                    r2 = r2 + ptcDesde + "' "
                if temporada != "":
                    r2 = r2 + " AND temporada = '"+temporada+"' "
            else:
                r2 = "temporada = '"+temporada+"' "
        sql = r1 + r2
        resultado = consultasBD.ordenCruda(sql)
        if resultado == None or resultado == () or resultado == 0:
            return False,()
        listaPTC = []
        print "Procesando"
        for item in resultado:
            listaPTC.append(item[0])
        return True,listaPTC
        
    def OnExportar(self, event):
        if not self.validar(): return
        ptcDesde = self.textCtrl1.GetLabel()
        ptcHasta = self.textCtrl2.GetLabel()
        temporada = self.comboBox1.GetLabel()
        resultado,listaPTC = self.obtenerPTC(ptcDesde,ptcHasta,temporada)
        if not resultado: 
            utiles.mensaje(None,"No hay datos a procesar")
            return
        
        fecha = utiles.obtenerFecha("Y-m-d h:m:s")
        fecha = fecha.replace("-","")
        fecha = fecha.replace(":","")
        fecha,hora = fecha.split(" ")
        texto = "Procesando exportacion en "
        archivo = "c:\\matrisamor.doc\matrisamorweb-"+fecha+"-"+hora+".csv"

        encabezado = ['sku']
        if self.checkBox2.GetValue(): encabezado.append('titulo')
        if self.checkBox3.GetValue(): encabezado.append('categoria')
        if self.checkBox4.GetValue(): encabezado.append('color')
        if self.checkBox5.GetValue(): encabezado.append('talle')
        if self.checkBox8.GetValue(): encabezado.append('peso')
        if self.checkBox6.GetValue(): encabezado.append('precio')
        if self.checkBox7.GetValue(): encabezado.append('stock')
        texto = ""
        for item in encabezado:
            texto+=item+","
        texto=texto[:-1]+"\n"

        f=open(archivo,"w")
        f.write(texto)
        total = 0
        for item in listaPTC:
            ptc=item
            r0 = "SELECT p1.ptc, p2.descri, p2.grupo, p1.color, p1.talle, p1.peso,\n"
            r1 = "       p2.preciolt1, p3.stock, p4.nombre, p5.nombregrupo \n"
            r2 = "FROM \n"
            r3 = "   (SELECT id AS ptc, codsussan, color, talle, peso  \n"
            r4 = "    FROM producto_talle_color WHERE id='"+ptc+"') AS p1, \n"
            r5 = "   productos AS p2, \n"
            r6 = "   stock AS p3, \n"
            r7 = "   colores AS p4, \n"
            r8 = "   grupos AS p5 \n"
            r9 = "WHERE \n"
            r10 = "    p1.codsussan=p2.codsussan AND \n"
            r11= "    p1.ptc=p3.ptc AND p3.sucursal='1' \n"
            r12= "    AND p1.color=p4.idcolor AND p2.grupo=p5.idgrupo \n"
            sql = r0+r1+r2+r3+r4+r5+r6+r7+r8+r9+r10+r11+r12
            resultado = consultasBD.ordenCrudaDict(sql)
            if resultado == None or resultado == () or resultado == 0:
                continue
            producto = resultado[0]
            f.write(producto['ptc'])
            if self.checkBox2.GetValue(): 
                f.write(","+producto['descri']+" "+str(producto['nombre']))
            if self.checkBox3.GetValue(): f.write(","+str(producto['nombregrupo']))
            if self.checkBox4.GetValue(): f.write(","+str(producto['nombre']))
            if self.checkBox5.GetValue(): f.write(","+str(producto['talle']))
            if self.checkBox8.GetValue(): f.write(","+str(producto['peso']))
            if self.checkBox6.GetValue(): f.write(","+str(producto['preciolt1']))
            if self.checkBox7.GetValue(): f.write(","+str(producto['stock']))
            f.write("\n")
            total+= 1
        f.close()
        texto = "Total productos exportados: "+str(total)+" en el archivo\n"
        texto+= archivo
        utiles.mensaje(None,texto)
        self.textCtrl1.SetFocus()

    def OnTodos(self, event):
        if self.checkBox9.GetValue():
            self.checkBox1.SetValue(True)
            self.checkBox2.SetValue(True)
            self.checkBox3.SetValue(True)
            self.checkBox4.SetValue(True)
            self.checkBox5.SetValue(True)
            self.checkBox6.SetValue(True)
            self.checkBox7.SetValue(True)
            self.checkBox8.SetValue(True)
        else:
            self.checkBox1.SetValue(False)
            self.checkBox2.SetValue(False)
            self.checkBox3.SetValue(False)
            self.checkBox4.SetValue(False)
            self.checkBox5.SetValue(False)
            self.checkBox6.SetValue(False)
            self.checkBox7.SetValue(False)
            self.checkBox8.SetValue(False)
